/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"313D1006-EF06-448A-8A73-9E830D301E4F",variableType:8}
 */
var fDiferencia = 0;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"CEC2B1A6-3388-4138-A10F-5E628D6C6655"}
 */
var fBonificacion = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"B470CCE0-DCBF-4A06-91DD-693EB4E76CA4",variableType:4}
 */
var fProveedor;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"02133905-1A04-4C69-BB8D-70AE1B056C42",variableType:4}
 */
var es_preview = 0;

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"5238D9B1-08EB-48ED-88C6-B9F2DAB40052"}
 */
function agregar(event) {
	if (proveedor_id != null)
		oc_cabecera_to_oc_detalle_ind.newRecord()

}

/**
 * Perform the element default action.
 *
 * @param {JSEvent} event the event that triggered the action
 *
 * @properties={typeid:24,uuid:"3F3D74FC-94EE-445E-A669-062308E6F85E"}
 */
function borrar(event) {
	oc_cabecera_to_oc_detalle_ind.deleteRecord()
	calculaTotales()
}

/**
 * Callback method for when form is shown.
 *
 * @param {Boolean} [firstShow] form is shown first time after load
 * @param {JSEvent} [event] the event that triggered the action
 *
 * @properties={typeid:24,uuid:"B1EABBCB-C3C6-4975-8422-BC0C7ACF0709"}
 */
function onShow(firstShow, event) {
	elements.fld_proveedor.requestFocus()
	databaseManager.setAutoSave(false)
	controller.newRecord()
	fecha 			= application.getServerTimeStamp()
	letra 			= 'X'
	sucursal 		= 1
	flete 			= 0
	es_preview 		= 0
	fBonificacion 	= null
	iva1_porc		= 21
	moneda 			= globals.zparam_moneda_default
	fDiferencia		= 0
		
	for (var i = 1 ; i <= 10 ; i++)
	{
		oc_cabecera_to_oc_detalle_ind.newRecord()
	}
}

/**
 * @properties={typeid:24,uuid:"FF278C44-B349-4406-AD31-5CD32A461C6D"}
 */
function cancelar()
{
	databaseManager.revertEditedRecords()
	onShow()
}

/** 61
 * @properties={typeid:24,uuid:"49C60C9C-3F19-4855-95EF-D93B68E8850A"}
 */
function confirmar()
{
	elements.subtotal1c.requestFocus()
	//Busco el proximo numero
	databaseManager.refreshRecordFromDatabase(oc_cabecera_to_numeracion_pr_ind,-1) //por error de OC duplicada

	if (oc_cabecera_to_numeracion_pr_ind.getSize() != 1)
	{//Si no existe en la tabla de numeracion
		globals.gMensaje = 'Sucursal o Tipo de comprobante incorrectos al buscar numeracion'
		globals.DIALOGS.showInfoDialog('O.C. Carga',  globals.gMensaje,  "OK") //  30/12/2013
		return false;
	}
	else
	{	
		var nro_aux = oc_cabecera_to_numeracion_pr_ind.ultimo_numero + 1  
		var ret = globals.duplicacion_oc_cabecera_ind(letra,sucursal,nro_aux,globals.zparam_codigo_ocompra) 
		if (ret != 0)  // si es cero, la factura no existe
		{ // ya existe , lo rechaza
			globals.gMensaje = 'Ya existe Orden de Compra con los datos: ' + letra + '-' + utils.numberFormat(sucursal,'0000') + '-' + utils.numberFormat(nro_aux,'00000000');
			globals.DIALOGS.showInfoDialog('O.C. Carga',  globals.gMensaje,  "OK") //  30/12/2013
			return false;
		}
	}
	oc_cabecera_to_numeracion_pr_ind.ultimo_numero++
	nro_oc = oc_cabecera_to_numeracion_pr_ind.ultimo_numero
	oc_estado = 1
	
	calculaTotales()
	importe_pendiente = subtotal2
	
	var $dtls = oc_cabecera_to_oc_detalle_ind
	//Actualizo precio unitario real en cada renglon
	var i = 1 ; 
	var error = 0
	while (i <= $dtls.getSize())
	{
		var $rcd = $dtls.getRecord(i)
		if ($rcd.cod_producto == null)
			$dtls.deleteRecord($rcd)
		else
		{
			if ($rcd.precio_unitario == null)
			{
				error = 1
				globals.DIALOGS.showInfoDialog('Error','Falta el precio unitario de un articulo','OK') // 23/01/2014
				break;
			}
			$rcd.precio_unitario_real = $rcd.total_renglon / $rcd.cantidad * (100 - bonificacion) / 100
			$rcd.cantidad_pendiente_entrega = $rcd.cantidad
			i++
		}
	}
	if (error == 1)
		return false
	if (!databaseManager.saveData())
		globals.DIALOGS.showInfoDialog('Error','Ocurrio un problema en la grabacion','OK')  // 23/01/2014
	else
	{
		if (globals.DIALOGS.showQuestionDialog('Imprime','¿Desea imprimir la orden de compra N° '+nro_oc+'?','Si','No') == 'Si')
		{
			es_preview = 1
			forms.oc_cabecera_imp_ind.controller.loadRecords(oc_cabecera_id)
			forms.oc_cabecera_imp_ind.controller.showPrintPreview()
		}
		else
			onShow()
	}
	return true
}

/**
 * @properties={typeid:24,uuid:"BD0F3A6A-3DDA-4282-82A1-890AB31E5B1C"}
 */
function calculaTotales() {
	var $tot 	= oc_cabecera_to_oc_detalle_ind.getSize()
	var $acum 	= 0
	var $acum_d = 0
	
	for (var i = 1 ; i <= $tot ; i++)
	{
		var rcd = oc_cabecera_to_oc_detalle_ind.getRecord(i)
		
		$acum 	+= rcd.total_renglon
		$acum_d += rcd.diferencia
	}
	
	fDiferencia = $acum_d
	
	subtotal1 				= $acum
	subtotal2 				= $acum * (1 - bonificacion / 100)
	bonificacion_importe 	= subtotal1 - subtotal2
	if (flete == 1)
		subtotal2 			+= flete_importe
	iva1_imp 				= subtotal2 * (iva1_porc / 100)
	total					= subtotal2 + iva1_imp
}

/**
 * @properties={typeid:24,uuid:"1EE62A29-3F6F-43AA-87D3-055F1DF82B70"}
 */
function habilitaFlete()
{
	if (flete != null)
		elements.flete_importe.enabled = flete
	else
		elements.flete_importe.enabled = false
}

/**
 * Handle changed data.
 *
 * @param {Object} oldValue old value
 * @param {Object} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"7904C9C1-EB37-4D9B-B5C8-E72265B06980"}
 */
function onDataChangeBonificacion(oldValue, newValue, event) {
	
	bonificacion 		= globals.calculaBonificacion(fBonificacion)
	calculaTotales()
	return true
}

/**
 * Handle changed data.
 *
 * @param {String} oldValue old value
 * @param {String} newValue new value
 * @param {JSEvent} event the event that triggered the action
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"111BAB74-B934-4B7E-86E1-D36707A626E2"}
 */
function onDataChangeDeposito(oldValue, newValue, event) {
	globals.gdeposito_ind = entrega_lugar
	return true
}
